"Realisierung einer Verschlⁿsselungstechnik fⁿr Daten im ISDN B-Kanal"
Inhaltsverzeichnis
1 Einleitung
2 Motivation und Zielsetzung
3 Stand der Technik
3.1 Was schon an Vergleichbarem existiert
3.2 ISDN-Basisanschlu▀
3.2.1 ISDN S0-Bus
3.2.2 ISDN D-Kanal
3.2.3 ISDN B-Kanal
3.3 Verschlⁿsselungsalgorithmen
3.3.1 Blockchiffrierer
3.3.2 Stromchiffrierer
3.3.3 Asymmetrischer RSA Algorithmus
3.3.4 Diffie Hellman Schlⁿsselaustausch
3.3.5 "Oneway" Algorithmen
3.4 Bausteine fⁿr dieses Projekt
3.4.1 ISDN-Bausteine
3.4.2 Prozessoren fⁿr die Verschlⁿsselung
4 Grobkonzept
4.1 Verschlⁿsselungsalgorithmus fⁿr den Datenstrom
4.2 Blockschaltplan
5 Feinkonzept
5.1 Die Chipkarte
5.2 Der Steuerprozessor mit Speicher
5.3 Der Steuerprozessor mit Peripherie
5.4 Die ISDN-Hardware
5.5 Die Ver- und Entschlⁿsselungs-DSPs
6 Zusammenfassung
6.1 Bewertung
6.2 Ausblicke
7 Anhang
7.1 Abbildungsverzeichnis
7.2 Index
7.3 Glossar
7.4 Liste der Signalnamen
7.5 Pinbelegung der Steckverbinder
7.6 Stⁿcklisten
7.6.1 Stⁿckliste ISDN-Telefon-Board
7.6.2 Stⁿckliste ISDN-DSP-Verschlⁿsselungsboard
7.6.3 Stⁿckliste der externen Bauteile
7.7 Inhalt der Daten-CD
7.8 Literaturverzeichnis
7.9 DSP-Listing
7.10 StromlaufplΣne
7.11 BestⁿckungsplΣne
7.12 Layouts
1 Einleitung
In diesem Kapitel wird der Aufbau der vorliegenden Diplomarbeit erklΣrt. Die Arbeit besteht aus 6 Kapiteln plus Anhang. Die Einleitung, das erste Kapitel, lesen Sie gerade. Im zweiten Kapitel wird die Motivation und Zielstellung beschrieben. Warum wird das beschriebene GerΣt gebraucht und welche Eigenschaften soll es erfⁿllen. Das dritte Kapitel befa▀t sich mit dem Stand der Technik und dem technischen Umfeld. Wie ist der ISDN-Basisanschlu▀ aufgebaut und welche Eigenschaften des ISDN-Netzes sind fⁿr diese Arbeit interressant? Und es werden die Grundlagen der Kryptographie betrachtet. Zudem wird in diesem Kapitel die Auswahl der relevanten Bauelemente fⁿr das Projekt getroffen. Im vierten Kapitel wird der Kryptoalgorithmus, der fⁿr dieses Projekt ausgewΣhlt worden ist, beschrieben. Es wird ein ▄berblick ⁿber die gesamte Hardware des Verschlⁿsselungstelefons gegeben. Das fⁿnfte Kapitel geht dann ins Detail. Die Hardwarekomponenten und auch die Implementierung der Kroyptoalgorithmen werden dort nΣher beschrieben. Als letztes Kapitel folgt eine abschlie▀ende Zusammenfassung der Arbeit und eine eigene Bewertung. Es wird auch beschrieben, was und wie dieses GerΣt noch verbessert und weiterentwickelt werden kann.
Im Anhang befinden sich Tabellen und Diagramme, Literatur- und Abbildungsverzeichnisse, Listen der Signalnamen und deren Bedeutung, die Pinbelegung der Steckleisten, eine Stⁿckliste der eingesetzten Bauelemente und einiges mehr. Zudem enthΣlt der Anhang die StromlaufplΣne, Layouts und BestⁿckungsplΣne. Dieser Diplomarbeit ist zudem eine Daten-CD beigelegt, deren Inhaltsangabe ebenfalls dem Anhang zu entnehmen ist.
2 Motivation und Zielsetzung
In dieser Diplomarbeit wird der Aufbau eines Sprachverschlⁿsselungssystems behandelt, das am ISDN-Basisanschlu▀ betrieben werden kann. Es gewΣhrleistet weitgehen die Geheimhaltung der Kommunikation zwischen zwei GesprΣchspartnern. Die PrivatsphΣre wird zur Zeit immer mehr gest÷rt oder eingeschrΣnkt. Angefangen von Hackern, die aus Spa▀ an der Sache fremde Leitungen anzapfen und mith÷ren, ⁿber professionellen Datendiebstahl, z.B. Industriespionage, bis hin zu staatlichen Ma▀nahmen wie "Der gro▀e Lauschangriff" reicht die Palette der Angriffe. Man sollte sich seine PrivatsspΣre sichern und sich nicht zum "glΣsernen Menschen" machen lassen.
Ziel ist es, ein GerΣt zu entwickeln, das die zu ⁿbertragenden Informationen zwischen den EndgerΣten so unkenntlich fⁿr Dritte macht, da▀ nur die beiden GesprΣchspartner ihre Nachrichten verstehen k÷nnen. Die Daten, die ⁿber den hausinternen ISDN-S0-Bus, den UK0-Leitungen zu den Vermittlungsstellen und durch die Vermittlungsstellen gehen, werden verschlⁿsselt und k÷nnen nur mit dem entsprechenden Code wieder entschlⁿsselt werden.
Der Grund, da▀ fⁿr dieses Projekt das ISDN-Netz und nicht das analoge Telefonnetz genutzt wird, besteht darin, da▀ bei ISDN die Sprachdaten schon in digitaler Form vorliegen und nicht erst komprimiert und auf die analogen Leitungen aufmoduliert werden mⁿssen.
Es soll also ein komplettes ISDN-EndgerΣt, entsprechend der FunktionalitΣt eines Telefons, aufgebaut werden, das noch zusΣtzlich die Nutzdaten im jeweiligen B-Kanal ver- und entschlⁿsselt. Die verwendbaren Verschlⁿsselungsalgorithmen sollten einen hohen Sicherheitsstandard aufweisen. In der heutigen Zeit ist es m÷glich, mit entsprechendem matriellen Einsatz, wie ihn sich einige gr÷▀ere Organisationen oder staatliche Beh÷rden leisten k÷nnen, einfachere Codierungen zu entschlⁿsseln. Der Schlⁿssel sollte, wie bei einem realen Schlo▀, entfernbar und austauschbar sein. Dafⁿr wird in dieser Arbeit, Σhnlich einer Telefonkarte, eine Chipkarte eingesetzt, die den Schlⁿssel enthΣlt. Besser wΣhren Karten, die sowohl den Schlⁿssel, als auch einen Teil des Algorithmuses unterbringen, wie z.B. die NetKeyCard von Telesec.
Fⁿr ein ISDN-EndgerΣt mu▀ das D-Kanal Protokoll (Siehe Seite 10) auf einem Steuerprozessor implementiert werden. Dieses D-Kanal Protokoll ist nicht Teil der Diplomarbeit, sondern wird in einer getrennten Arbeit behandelt.
Hier geht es vielmehr um die gesamte Hardware und die Verschlⁿsselungsalgorithmen. Es soll der Aufbau eines ISDN-Telefons mit Verschlⁿsselungsfunktion gezeigt werden. Softwareseitig wird auf Ver- und Entschlⁿsselung von Datenstr÷men eingegangen.
Eine besondere Anforderung an die Hardware ist, da▀ sie aus Bauteilen besteht, die leicht im Elektronikhandel erhΣltlich sind. Denn diese Schaltung soll von jedermann leicht nachbaubar sein. Es sollen also keine exotischen Spezialbauteile und keine Chips, die mit speziellen ProgrammiergerΣten gebrannt werden mⁿssen, eingesetzt werden. Die Leiterplatte(n) sollen maximal zweiseitig sein, damit sie noch relativ einfach zu fertigen sind. Auch dⁿrfen die verwendeten Bauteile nicht ein zu kleines Pinraster haben, damit sie auch von jedem leicht zu verl÷ten sind. Also kommen erstmal nur DIL und PLCC GehΣuse in Frage.
3 Stand der Technik
Hier wird die Basis fⁿr dieses Projekt beschrieben. Als erstes, was es schon an vergleichbaren GerΣten gibt und was sonst noch so geplant ist. Als zweites, fⁿr die Arbeit alle wesentlichen Fakten ⁿber den ISDN-Basisanschlu▀. Als letztes noch, welche Halbleiter fⁿr dieses GerΣt in Frage kommen.
3.1 Was schon an Vergleichbarem existiert
Es existieren schon Einrichtungen, mit denen verschlⁿsselt auf dem ISDN-Netz telefoniert werden kann. Die meistgenutzte Variante ist der Einsatz eines Personalcomputers mit einer ISDN-Karte und einer Soundkarte. Die ISDN-Karte im PC arbeitet mit einem hardwarespezifischen CAPI-Treiber zusammen. Dieser CAPI-Treiber ⁿbernimmt alle Hardwarefunktionen der Karte und auch die gesamte Verwaltung des D-Kanals. Nun gibt es Programme, meist unter Windows, die mit Hilfe einer Soundkarte ein ISDN-Telefon simulieren. Ein Kopfh÷rer mit Mikrophon wird an die Soundkarte angeschlossen und damit ein Telefonh÷rer geschaffen. Auf einem Fenster der graphischen OberflΣche werden dann Tastenfeld und Display dargestellt. Nun kann noch bei einigen Programmen eine Verschlⁿsselungsfunktion aktiviert werden, um GesprΣche mit einer gewissen Geheimhaltung zu fⁿhren. Die Ver- und Entschlⁿsselung wird dann vom Hauptprozessor des PC durchgefⁿhrt. Der Sinn dieser Variante ist, wenn schon ein PC mit ISDN und Soundkarte zur Verfⁿgung steht, da▀ nur noch diese Software installiert werden mu▀, um verschlⁿsselt auf dem ISDN-Netz telefonieren zu k÷nnen. Der Nachteil ist aber, da▀ fⁿr jedes TelefongesprΣch extra der PC mit Windows hochgefahren werden mu▀. Desweiteren ist ein kompletter PC nur zum Telefonieren z.zt. noch sehr aufwendig. Besser wΣre ein GerΣt wie ein normales Telefon, das eine Verschlⁿsselungsfunktion schon mit eingebaut hat.
Die Firma Siemens baut unter dem Namen "DSM ISDN" ein solches GerΣt, aber nΣhere Informationen sind derzeit nicht erhΣltlich. Das Verschlⁿsselungstelefon ist nicht fⁿr die Allgemeinheit bestimmt. Auch von der Telekom (Telesec) werden in einiger Zeit verschiedene Dienste gegen das illegale Abh÷ren von Fernmeldeleitungen angeboten, die jedoch nicht generell vor einem Abh÷ren schⁿtzen.
Fⁿr das analoge Telefonnetz hat der Chaos-Computer-Club schon ein "Crypto-Phone" entwickelt. Es benutzt ein Modem zur Verbindung mit dem Telefonnetz und hat eine GSM-Σhnliche Sprachkompression. Hauptbestandteil ist ein leistungsstarker DSP. Das Projekt ist neu, und es sind nur wenige Informationen zu bekommen.
3.2 ISDN-Basisanschlu▀
Jeder normale Telefonanschlu▀ kann, auf Antrag, in einen ISDN-Basisanschlu▀ umgewandelt werden, wenn eine Angliederung an eine digitale Vermittlungsstelle zur Verfⁿgung steht. Ob ein Anschlu▀ an einer digitalen Vermittlungsstelle vorhanden ist, kann ganz einfach festgestellt werden durch den Versuch, mit Ton-Wahl (DTMF) zu wΣhlen. Ist nur der Puls-Wahl-Modus m÷glich, dann ist man noch an einer alten analogen Vermittlungsstelle angeschlossen, und es wird etwas lΣnger dauern, bis der ISDN-Anschlu▀ geschaltet wird. Ein ISDN-Anschlu▀ ist z.zt. teurer als ein normaler Telefonanschlu▀, er hat aber auch einige Vorteile. Einer der zwei wichtigsten ist, da▀ auf einem einzigen Leitungspaar, der UK0-Leitung, gleichzeitig zwei Kommunikatiosverbindungen nach drau▀en gefⁿhrt werden k÷nnen, was z.B. eine Dreierkonferenz erm÷glicht, weiterhin Sprechen und Faxen gleichzeitig, Angerufenwerden wΣhrend telefoniert wird und vieles mehr [2]. Der andere gro▀e Vorteil ist die viel h÷here ▄bertragungsrate von Daten. Das schnellste verfⁿgbare Modem kann auf einer normalen Telefonleitung 33,6kBit/s (spezielle Modems 56,7kBit/s) ⁿbertragen. ISDN kann 64kBit/s, oder wenn beide KanΣle benutzt werden, sogar 128kBit/s (kostet aber auch doppelt Gebⁿhren). Bei ISDN-Anschlu▀verlegung wird von der Telekom ein NTBA an die Leitung angeschlossen, an der sich zuvor das analoge Telefon befunden hat (Abbildung 1). Damit wird die Leitung zur Vermittlungsstelle zur Uk0-Schnittstelle, an der natⁿrlich kein analoges Telefon mehr angeschlossen werden darf, da sich die elektrischen Eigenschaften geΣndert haben.
Abbildung 1: ISDN-Basisanschlu▀
3.2.1 ISDN S0-Bus
An dem NTBA steht der S0-Bus zur Verfⁿgung. Dort k÷nnen nun die ISDN-EndgerΣte (Telefon, ISDN-Karte, u.s.w.) oder eine ISDN-Telefonanlage angeschlossen werden (Abbildung 1). An diesem Bus k÷nnen max. acht GerΣte betrieben werden, die mit maximal zehn Meter langen Stichleitungen am Bus angeschlossen werden. Der gesamte S0-Bus darf 150 Meter bei MehrgerΣteanschlu▀ oder 1000 Meter bei einem einzigen angeschlossenen GerΣt lang sein. Dieser S0-Bus ist vieradrig, davon sind zwei Adern fⁿr den Transport der Daten vom EndgerΣt (TE) zum Netzabschlu▀adapter (NTBA oder NT) belegt und zwei fⁿr die Daten vom NT zum TE. Eine Stromversorgung fⁿr die EndgerΣte wird zusΣtzlich mit auf dem S0-Bus zur Verfⁿgung gestellt (Abbildung 2). Es handelt sich hierbei um eine Spannung von 40V zwischen den Leitungspaaren a1-b1 und a2-b2, die mit max 100mA belastet werden darf. Die Signale werden mittels eines ▄bertragers in den ISDN-GerΣten aus den Leitungspaaren ausgekoppelt.
Abbildung 2: ISDN Western-Stecker
Beim S0-Bus reprΣsentiert der Netzabschlu▀adapter (NTBA oder NT) die Vermittlungsstelle, weil vom NTBA die Uk0-Leitung zur Vermittelungsstelle geht. Der S0-Bus sieht nur den NTBA und hat eine ▄bertragungsrate von 144 kBit/s netto pro Richtung. Das sind 2 B-KanΣle mit je 64 kBit/s und ein D-Kanal mit 16 kBit/s. Es gibt zudem noch Synchronisations- und Steuerbits (Abbildung 3) auf dem Bus, die hier nicht weiter betrachtet werden, da sie fⁿr die Verschlⁿsselung der NutzdatenkanΣle nicht weiter wichtig sind und diese Bits schon automatisch in allen am Markt verfⁿgbaren ISDN-Chip abgearbeitet werden. Fⁿr die Verschlⁿsselung sind eigentlich nur die NutzdatenkanΣle, die B-KanΣle, interessant.
Abbildung 3: Signale auf dem ISDN S0-Bus
3.2.2 ISDN D-Kanal
In diesem Signalisierungskanal, der wichtigsten Einheit im ISDN-System, werden sΣmtliche Steuerfunktionen ⁿbertragen. Die ganze Organisation wie z.B. Verbindungsauf- und -abbau, ankommender Ruf (Klingel), gewΣhlte Ziffern, Rufnummer des GesprΣchspartners, Gebⁿhreninformationen und vieles mehr wird auf dem D-Kanal ⁿbertragen. Als wichtig sei hier erwΣhnt, da▀ im D-Kanal anzugeben ist, welcher Art die Nutzdaten auf den B-KanΣlen sind (Sprache oder Daten). Das ist insofern fⁿr die vorliegende Diplomarbeit wichtig, da ein Telefon "restricted" Sprechdaten anmeldet, aber diese nach dem Verschlⁿsseln nur noch "unrestricted" BinΣrdaten sind.
Abbildung 4: D-Kanal Schichtenmodel
Das sehr komplexe ISDN-D-Kanal Protokoll ist in 3 Schichten (Abbildung 4) aufgeteilt. Die erste Schicht ist die Hardware- und Bitⁿbertragungsschicht. Die Richtlinien fⁿr die Schicht 1 des D-Kanals sind in der ITU-T I.430 / I.431 Norm festgelegt. Beim S0-Bus ist eine 0 dominant und die 1 rezessiv. Diese Festlegung ist wichtig, da an dem Bus bis zu 8 GerΣte gleichzeitig angeschlossen sein k÷nnen, die ein D-Kanal Paket senden wollen. Daher gibt es eine Kollisionserkennung, die dem GerΣt mit der niedrigeren PrioritΣt veranla▀t, die Sendung einzustellen. Da die D-Kanal Informationen bitweise ⁿbertragen werden, mu▀ eine Bytesynchronisation stattfinden. Diese besteht aus der Bitfolge "01111110" und wird immer am Anfang und Ende eines D-Kanal Pakets ⁿbertragen. Damit es keine Verwechslungen mit Daten gibt, die auch zufΣllig sechs oder mehr Einsen hintereinander haben, wird nach dem "Bitstuffing" Algorithmus immer nach fⁿnf aufeinanderfolgenden Einsen vom Sender eine Null eingefⁿgt, die vom EmpfΣnger wieder entfernt wird. Damit ist sichergestellt, da▀ die Bitfolge "01111110" nur fⁿr die Bytesychronisation zustΣndig ist, und acht oder mehr Einsen kennzeichnen einen freien D-Kanal. Bei der Bitfolge "011111110" wird ein Rahmenabbruch durchgefⁿhrt. Dieses Verfahren stammt aus dem HDLC-Protokoll, welches fⁿr X.25 eingesetzt wird.
In der zweiten Schicht liegt die Aufgabe der Fehlererkennung und -behandlung sowie die Adressierung der Pakete auf dem D-Kanal, damit diese das richtige GerΣt erreichen. Die ITU-T Norm fⁿr Schicht 2 ist Q.920 / Q.921.
Die dritte Schicht enthΣlt nun die eigentlichen Signalisierungsdaten. Es gibt zur Zeit zwei Standards fⁿr diese Schicht, die von der Telekom in Deutschland eingesetzt werden. Die eine ist die alte nationale 1TR6 Norm, die von der Bundespost eingefⁿhrt wurde. Sie wird noch voraussichtlich bis ins Jahr 2003 von der Telekom unterstⁿtzt. Die andere ist die europaweit geltende Norm DSS1 ITU-T Q.930 / Q.932. Diese Norm ist die allgemein gⁿltige fⁿr einen zukⁿnftigen Basisanschlu▀.
3.2.3 ISDN B-Kanal
Sobald mit Hilfe des D-Kanals eine Verbindung zwischen zwei Partnern aufgebaut worden ist, werden die eigentlichen Nutzinformationen auf dem B-Kanal ⁿbertragen. Welcher der beiden B-KanΣle fⁿr diese Verbindung benutzt wird, wurde zuvor mit dem D-Kanal signalisiert.
Die Informationen auf dem B-Kanal werden byteweise ⁿbertragen, und im Rahmen dieser Arbeit entfΣllt die Bytesynchronisation. Es werden pro B-Kanal 64 KBit/s oder dementsprechend 8 KByte/s ⁿbertragen. Im B-Kanal gibt es keine weitere Schichtenaufteilung, da diese Bytes gleich von der Anwendungsschicht genutzt werden. Beim ISDN-Telefon sind diese Bytes zugleich die Werte fⁿr den A/D und D/A-Wandler. Die 8 Bits werden lediglich auf 14 Bit mit dem A-law Verfahren expandiert. Diese Bit-Expansion und Kompression ist in der IUT-T G.711 beschrieben. Durch ISDN-Karten werden die Bytes aus dem ISDN-Kanal direkt in den Computer ⁿbertragen und dort nach Bedarf weiterverarbeitet.
Fⁿr die Verschlⁿsselung der B-Kanal Daten ist folgendes zu beachten:
Der konstante Bytestrom von 8000 Byte/s kann fehlerhafte Bytes enthalten. Es mu▀ nun dafⁿr gesorgt werden, da▀ dieser Bytestrom beim Sender verschlⁿsselt und beim EmpfΣnger entschlⁿsselt wird und sich somit wieder die ursprⁿnglichen Daten ergeben, obwohl durchaus ein Byte wΣhrend der ▄bertragung gest÷rt werden kann. Welcher Art die eigentlichen Nutzdaten sind (Sprache, Fax oder Daten) ist unerheblich. Der Vermittlungsstelle mu▀ lediglich ⁿber dem D-Kanal mitgeteilt werden, da▀ "unrestricted" BinΣrdaten ⁿbertragen werden, damit diese nicht als Sprachdaten interpretiert werden und unter UmstΣnden z.B. durch GSM-Sprach-Compression oder analoge Leitungen einer Verfremdung unterliegen.
3.3 Verschlⁿsselungsalgorithmen
Ver- und Entschlⁿsselungsalgorithmen sind besondere Rechenvorschriften mit zwei Eingangs- und einer Ausgangsvariablen [1]. Einer der Eingangswerte ist immer der Schlⁿssel (k). Fⁿr die Verschlⁿsselung (E) ist der andere Eingangswert der Klartext (m), und der Ausgangswert ist der Chiffretext (c). Beim Entschlⁿsseln (E-1) ist es umgekehrt, der Chiffretext (c) geht in den Algorithmus rein, und es kommt bzw. sollte herauskommen der Klartext (m), falls der Schlⁿssel (k) stimmt. Das besondere an diesen Algorithmen ist folgendes: Es dⁿrfen keinerlei Rⁿckschlⁿsse auf den Schlⁿssel (k) bzw. den Inhalt des Klartextes (m) gezogen werden k÷nnen, wenn nur der Chiffretext (c) bekannt ist. Ebenfalls darf auch der Schlⁿssel (k) nicht mit der Kenntnis von Chiffre- und Klartextpaaren zurⁿckgerechnet werden k÷nnen. Die Sicherheit eines Verschlⁿsselungsalgorithmusses hΣngt von der LΣnge des Schlⁿssels (k) ab. Theoretisch ist es bei symmetrischen Algorithmen so, da▀ mit jedem Bit um das der Schlⁿssel (k) lΣnger wird, es doppelt so schwer wird, ihn durch durch Austesten offenzulegen. Es gibt nun mehrere Arten von Verschlⁿsselungsalgorithmen, die in zwei Klassen von Algorithmen aufgeteilt werden k÷nnen:
Die Blockchiffrierer verschlⁿsseln einen Klartextblock mit konstanter Gr÷▀e, meist 64 Bit, zu einem Chiffretextblock mit gleicher Gr÷▀e, und beim Entschlⁿsseln entsprechend umgekehrt. Es wird beim Ver- und Endschlⁿsseln der gleiche Schlⁿssel (k) verwendet. Daher sind diese Algorithmen symmetrisch. Solche Algorithmen bestehen meist aus Iterationen von Bitpermutation, Shiften, XOR, Lookuptables und besonderen Multiplikationen. Die bekanntesten Algorithmen sind DES und IDEA.
3.3.2 Stromchiffrierer
Diese Chiffrierer sind ebenfalls symmetrisch, aber es gibt keine konstante Gr÷▀e der Klar- und Chiffretextbl÷cke. Sie ver- und entschlⁿsseln Bit- oder Bytestr÷me. Je nach Art des Algorithmusses sind die Verschlⁿsselungsmuster nur vom Schlⁿssel (k) oder vom Schlⁿssel (k) zusΣtzlich des Datenstromes abhΣngig. Entweder handelt es sich bei ihnen um reine Stromchiffrierer wie RC4 oder A5-GSM, oder es werden Blockchiffrierer mit besonderen Rahmenalgorithmen eingesetzt und so zu Stromchiffrierern umfunktioniert.
3.3.3 Asymmetrischer RSA Algorithmus
Besonders interessant sind die asymmetrischen Algorithmen, wie RSA, in denen fⁿr die Ver- und Entschlⁿsselung zwei verschiedene Schlⁿssel (kS, kP) eingesetzt werden. Der Schlⁿssel (kS) bleibt geheim, und der Schlⁿssel (kp) wird ver÷ffentlicht. Das hat den gro▀en Vorteil, da▀ jeder eine Nachricht mit dem ÷ffentlich verfⁿgbaren Schlⁿssel (kP) verschlⁿsseln kann, aber nur mit dem privaten Schlⁿssel (kS) diese Nachricht wieder entschlⁿsseln kann. Der Algorithmus hat die recht einfache aber doch sehr wirkungsvolle Formel: "c = mk MOD n" (m=Klartext, c=Chiffretext, n=Produkt zweier Primzahlen und zusammen mit k ein Teil des Schlⁿssels). Das Geheimnis liegt in der Auswahl der Zahlen kS, kP und n. Die Zahlen kS, kP und n mⁿssen sehr gro▀ (1024 Bit oder mehr) gewΣhlt werden, damit der Algorithmus sicher ist. Dieser Algorithmus eignet sich aber nicht, um direkt Daten zu verschlⁿsseln, sondern es mu▀ zusΣtzlich ein symmetrischer Algorithmus hinzugenommen werden, um die eigentlichen Datenstr÷me zu verschlⁿsseln (Hybritalgorithmus) (Abbildung 5). Genau das macht das sehr gute Programm PGP, das fⁿr die Verschlⁿsselung von eMails im Internet verwendet wird [5]. Es verwendet eine Kombination von RSA und IDEA.
Abbildung 5: Hybrid-Algorithmus mit RSA und IDEA (PGP)
3.3.4
Diffie Hellman Schlⁿsselaustausch
Noch eine elegante Art, den symmetrischen Schlⁿssel auszutauschen, ist der Diffie Hellman Schlⁿsselaustausch. Hier k÷nnen sich zwei Partner, die zuvor noch keine Daten ausgetauscht haben, in aller ╓ffentlichkeit auf einen geheimen Schlⁿssel fⁿr einen symmetrischen Algorithmus einigen, ohne das Dritte ihn erfahren. Genauso wie beim RSA basiert alles auf der Rechnung "c = mk MOD n", und es mⁿssen auch hier sehr gro▀e Zahlen (1024Bit oder mehr) gewΣhlt werden.
Partner A
╓ffentlichkeit
Partner B
a ( N und a<p )
( = sa mod p
k = (a mod p
p (Primezahl)
s ( N und s<p )
(, (
b ( N und b<p )
( = sb mod p
k = (b mod p
Abbildung 6: Ablauf des Diffie Hellman Schlⁿsselaustauschs
Fⁿr den Schlⁿsselaustausch (Abbildung 6) einigen sich beide Partner in aller ╓ffentlichkeit auf eine Primzahl (p) und eine natⁿrliche Zahl (s) die kleiner als p ist. Jetzt sucht jeder Partner fⁿr sich je eine natⁿrliche Zahl (a, b) aus, die auch kleiner als p sein mu▀, und jeder errechnet sich damit eine Zahl ((, (), die sich die Partner in aller ╓ffentlichkeit austauschen. Die Zahlen a und b bleiben geheim. Nun kann sich jeder Partner die Zahl k errechnen. Ein Dritter, der die Zahlen p, s, ( und ( mitgeh÷rt hat, kann nicht die Zahl k berechnen, weil er weder die Zahl a noch die Zahl b kennt. Die beiden Partner k÷nnen aber die Zahl k nun als Basis fⁿr einen symmetrischen Algorithmus nutzen. Die gro▀e Gefahr bei diesem Schlⁿsselaustausch ist, da▀ sich ein Dritter die Leitung auftrennt und dann nach beiden Partnern hin getrennt je einen Schlⁿsselaustausch vornimmt. Beide Partner denken, sie hΣtten ein gemeinsamen geheimen Schlⁿssel k, aber dabei haben sie jeweils mit dem Angreifer den Schlⁿsselaustausch vorgenommen und sind auch im Besitz verschiedener Schlⁿssel k1 und k2. Dieses Verfahren erfordert es unbedingt, mit seinem Partner die Checksumme des Schlⁿssels k zu vergleichen, und zwar so, da▀ es der Angreifer nicht verfΣlschen kann.
3.3.5 "Oneway" Algorithmen
Dann wΣren da noch die Oneway-Algorithmen zu erwΣhnen, die, wie der Name schon sagt, nur verschlⁿsseln k÷nnen. Fⁿr sie ist auch meist der erzeugte Chiffretext (c) kⁿrzer als der eingegebene Klartext (m). Diese Algorithmen machen durchaus Sinn, besonders fⁿr die Authentifizierung beispielsweise in der Passwortverwaltung. Nach der Eingabe des Passwortes auf der Tastatur wird das Passwort verschlⁿsselt und mit dem verschlⁿsselten Passwort in einer Datenbank verglichen. Das Passwort kann nicht mehr zurⁿckgerechnet werden, es kann aber immer noch mit dem eingegebenen verglichen werden. Oneway-Algorithmen sind meist einfacher, da keine Invertierung erforderlich ist. Meist sind sie anwenderspezifisch gestaltet oder es wird die Verschlⁿsselungsfunktion von Standard-Algorithmen genutzt. Ihren Einsatz finden diese Algorithmen oft bei Chipkarten zur Authentifizierung, z.B. Pay-TV, Mobiltelefone oder Zugangskontrolle. (Abbildung 7)
Abbildung 7: Oneway-Algorithmus zur Authentifizierung
3.4 Bausteine fⁿr dieses Projekt
Von besonderer Bedeutung ist neben der eigentlichen FunktionalitΣt die Auswahl der Bausteine, damit das fertige GerΣt auch bestm÷glich die in der Aufgabenstellung genannten Eigenschaften erfⁿllt: leicht nachzubauen, hohe und preiswerte Verfⁿgbarkeit der Chips und allgemeinen Bauelemente.
3.4.1 ISDN-Bausteine
Der ISDN-Chip stellt insofern ein Problem dar, da er mehr zu den Spezialbauteilen geh÷rt und damit schwer beschaffbar ist. Einer der gr÷▀ten Anbieter fⁿr ISDN-Bausteine ist die Firma Siemens. Die Bausteine, die hier in Frage kΣmen, wΣren PEB2080, PEB2085/6 und PEB2185/6. Auch andre Firmen bieten ISDN-Chips an, wie National Semiconductor den TP3420N, Mintel den MT9830 oder Motorola den MC145572. Aber AMD hat mit dem AM79C30A etwas Besonderes auf den Markt gebracht [7]. Er enthΣlt als einziger Chip jegliche FunktionalitΣt, die fⁿr die ISDN-Anbindung derzeit n÷tig ist, angefangen vom S0-Bus-Interface bis hin zu dem CODEC mit seinem A/D, D/A Wandler mit Filter-DSP. Au▀erdem nimmt er einem auch eine Menge Arbeit in den unteren Schichten des D-Kanalprotokolls ab. Desweiteren verfⁿgt er ⁿber eine serielle Schnittstelle fⁿr NutzdatenkanΣle, die sich gut mit einem DSP verbinden lΣ▀t. Auch ist er nicht viel schwerer beschaffbar als die alternativ zuvor erwΣhnten ISDN-Bausteine und befindet sich in einem PLCC-GehΣuse.
3.4.2 Prozessoren fⁿr die Verschlⁿsselung
Der verwendete Prozessor oder die verwendeten Prozessoren mⁿssen zwei Kriterien erfⁿllen. Zum einen mu▀ er schnell genug sein, um je einen 8kByte/s gro▀en Datenstrom mit IDEA zu ver- und entschlⁿsseln. Und zum anderen mu▀ er leicht beschaffbar sein und sollte auch nicht viel kosten. Da der IDEA-Algorithmus im Cipher-Feedback-Mode genutzt werden soll und es ja zwei Datenstr÷mme sind, einer hin und einer zurⁿck, mⁿssen hier 16000 IDEA-Berechnugen pro Sekunde bewerkstelligt werden. Der IDEA-Algorithmus besteht hauptsΣchlich aus Multiplikationen. Daher bieten sich DSPs an, da sie Multiplikationen sehr viel schneller ausfⁿhren als normale Prozessoren. Aber die in die engere Wahl gezogenen DSPs eignen sich aufgrund ihres Befehlssatzes schlecht fⁿr Steueraufgaben, sondern eher fⁿr Berechnungen, die in der Regelungstechnik anfallen. Eine andere gute L÷sung wΣre ein komplettes, fertiges Prozessorboard wie das Intel i386EX. Es hat einen 386er mit 25MHz und je 1MByte Flash-EEPROM und RAM. Und es ist schon fertig aufgebaut, nur die ISDN-Hardware, Display und Tastatur mⁿssen noch angefⁿgt werden. Aber selbst der 386er mit 25MHz ist noch ca. 3x zu langsam fⁿr die 16000 IDEAs pro Sekunde, und er ist mit ca. 600 DM auch sehr teuer. Also zurⁿck zu den DSPs. Texas Instruments hat die DSP-Serie TMS320Cxx. Dort gibt es einige DSPs, die ⁿber internen RAM-Speicher und Bootloader verfⁿgen. Wenn dieser RAM-Speicher ausreicht, um das IDEA-Programm und seine Daten zu verwalten, wird kein weiterer externer Speicher mehr fⁿr die DSPs ben÷tigt. Sie mⁿ▀ten dann aber von einem weiteren Prozessor nach jedem Einschalten mit ihrem Programm geladen werden. Aber ein zusΣtzlicher Prozessor wird ohnehin ben÷tigt, da sich DSPs, wie schon erwΣhnt, nicht gut fⁿr die Bedienung der Steuersignale des D-Kanals und des Benutzerinterfaces eignen. Der TMS320C26 ist eine gute Wahl, da er die Kriterien der Aufgabenstellung erfⁿllt. Er ist leicht beschaffbar, preiswert (ca. 33,- DM), besitzt ein PLCC-GehΣuse und ben÷tigt fast keine externen Bauteile [6]. Jedoch schafft der TMS320C26 mit 40MHz nur ca. 11000 IDEAs pro Sekunde. Da aber mit zwei separaten Datenstr÷men von je 8000 Byte/s gearbeitet wird, kann mittels zweier DSPs einerseits der Datenstrom vom Benutzer zur Vermittlungsstelle verschlⁿsselt und mit dem anderen DSP der Datenstrom von der Vermittlungsstelle zum Benutzer entschlⁿsselt werden. Ein weiterer positiver Aspekt ist diesbezⁿglich die serielle Schnittstelle, ⁿber die dieser DSP verfⁿgt. Sie lΣ▀t sich sehr gut mit den Datenstr÷men, die aus dem ISDN-Chip kommen, verschalten. Als Steuerprozessor kommt hier ein schnelles 51er-Derivat von Dallas zum Einsatz, das ein paar wesentliche Vorteile gegenⁿber dem normalen 80C51 hat. Die wichtigsten bei diesem Bauteil genutzten Vorteile sind, da▀ es die Befehle im Durchschnitt 2,5 mal schneller ausfⁿhrt als ein normaler 51er Prozessor bei gleicher Taktfrequenz, die hier sogar ⁿber 33MHz liegen kann. Ein weiterer Vorteil ist, da▀ es ⁿber einen zweiten seriellen Port verfⁿgt. Desweiteren hat der Dallas Prozessor zwei Datenpointer, die zur Adressierung der externen Datenspeicher genutzt werden k÷nnen.
4 Grobkonzept
Hier werden die beiden wichtigsten Aspekte dieses Projekts vorerst grob umrissen. Dazu geh÷ren die eingesetzten Verschlⁿsselungs-Algorithmen sowie die einzusetzende Hardware.
4.1 Verschlⁿsselungsalgorithmus fⁿr den Datenstrom
Da es sich beim B-Kanal um einen Bytestrom handelt, der auch fehlerhafte Bytes enthalten kann, mⁿssen ein paar besondere Anforderungen an den Algorithmus gestellt werden. Zum einen mu▀ es ein Stromchiffrierer sein, der einen kontinuierlichen Byte-Strom verarbeitet. Zum anderen mu▀ er selbstsynchronisierend sein, da auf dem B-Kanal nur die Nutzdaten und keine zusΣtzlichen Steuersignale ⁿbertragen werden k÷nnen. Au▀erdem kann es vorkommen, da▀ ein Byte ausfΣllt oder ein Byte zuviel erkannt wird.
Als Verschlⁿsselungsalgorithmus wird in dieser Arbeit der IDEA verwendet. Er lΣ▀t sich im Gegensatz zum DES, der fⁿr Hardware optimiert wurde, relativ einfach als Software realisieren. Mit seinem 128 Bit langen Schlⁿssel ist er sehr sicher. Es existieren 3,4 ( 1038 m÷gliche Schlⁿsselkombinationen. DES mit 56 bittigem Schlⁿssel hat "nur" 7,2 ( 1016 Kombinationen. Selbst wenn man es schafft, zehn Milliarden Schlⁿssel pro Sekunde auszutesten, dafⁿr werden etwa 100000 schnelle PCs ben÷tigt, dauert es etwa 5,4 ( 1020 Jahre um den Schlⁿssel zu "knacken"! Beim DES wΣren es nur 41,7 Tage. Statt der PCs eignen sich FPGAs oder ASICs wesentlich besser zum Austesten von Verschlⁿsselungen. Gerⁿchteweise schaffen es gewisse Geheimdienste, einen DES-Schlⁿssel in 5 Minuten zu bestimmen, aber beim IDEA wΣre es immer noch ein astronomischer Wert von 4,5 ( 1016 Jahren. Der IDEA wird auch in vielen anerkannten Verschlⁿsselungsprogrammen wie PGP eingesetzt. IDEA ist ein Blockchiffrierer, der noch mit einem geeigneteten Rahmenalgorithmus zum Stromchiffrierer umfunktioniert werden mu▀. Eine gute M÷glichkeit ist der "Cipher-Feedback Mode" (Abbildung 8).
Abbildung 8: Cipher-Feedback Mode mit IDEA
Das wesentliche am Cipher-Feedback Mode ist, da▀ er die letzten acht verschlⁿsselten Bytes die ⁿbertragen werden, in einem Schieberegister sammelt. Damit hat er den 64Bit Eingangswert fⁿr die IDEA-Verschlⁿsselung. Da ja die verschlⁿsselten ⁿbertragenen Bytes auf beiden Seiten (Sender und EmpfΣnger) in die Schieberegister gelangen, sind die Inhalte beider Schieberegister spΣtestens nach 8 Berechnugs-Zyklen (8(125(s = 1ms) gleich und bleiben gleich, solange kein ▄bertragungsfehler auftritt. Somit ist der Ergebnis der IDEA-Verschlⁿsselung auf beiden Seiten gleich, wenn, voraussetzungsgemΣ▀ der Schlⁿssel (k) gleich ist. Von dem 64Bit IDEA-Verschlⁿsselungsergebnis wird ein Byte genommen, meist das MSB, und mit dem Byte aus dem Datenstrom verexclosivodert (Abbildung 8). Der einzige Nachteil dieses Cipher-Feedback-Algorithmus ist, da▀ die achtfache Menge an IDEA-Berechnungen durchgefⁿhrt werden mu▀, wie wenn der IDEA direkt eingesetzt wⁿrde.
Nun aber zum eigentlichen IDEA-Algorithmus (Abbildung 9). Der IDEA hat nur drei verschiedene Grundoperationen: XOR, Addition ohne ▄bertrag auf das 17. Bit und eine "IDEA-spezifische Multiplikation". Zum XOR und der Addition gibt es nichts weiter zu sagen, aber zur IDEA-spezifischen Multiplikation. Diese Operation lautet "x = (a*b) mod (216+1)". Der Ausdruck (216+1) mit dem Resultat 65537 ist eine Primzahl. Folgende Festlegung ist zu beachten: Ist einer der Faktoren (a oder b) gleich Null, dann wird er zu 216, und wenn das Ergebnis x der IDEA-spezifischen Multiplikation gleich 216 ist, wird es auf Null gesetzt.
Abbildung 9: IDEA-Algorithmus
Es existiert ein eleganter Weg, die Modulodivision durch 65537 zu umgehen und damit viel Rechenzeit und Speicher einzusparen. Nach der Multiplikation erfolgt eine Subtraktion des Low-Word vom High-Word des Produkts, und ist dabei ein ▄bertrag entstanden, wird eine Eins auf das Ergebnis addiert. Zur Veranschaulichung dient eine C-Funktion, die genau diese Operation durchfⁿhrt (Abbildung 10):
Abbildung 10: IDEA-spezifische Multiplikation in C
Vor der Ausfⁿhrung des IDEA-Algorithmus mu▀ jedoch der Schlⁿssel expandiert werden. Dieser ist 128 Bit lang, aber der Algorithmus ben÷tigt 52 mal den 16Bit Teilschlⁿssel (k1,1 - k1,6 / k2,1 - k2,6 / ... / k8,1 - k8,6 / k9,1 - k9,4). Der Ablauf gestaltet sich folgenderma▀en:
Aus dem 128bitigem Schlⁿssel werden die ersten acht Teilschlⁿssel (k1,1 - k2,2) entnommen, dann erfolgt eine Rotation des Schlⁿssels um 25 Bit nach links, es werden wiederum die nΣchsten acht Teilschlⁿssel (k2,3 - k3,4) entnommen, und so weiter bis sΣmtliche 52 Teilschlⁿssel vorliegen. Zum Entschlⁿsseln werden die Teilschlⁿssel erstens in den acht Runden vertauscht und zweitens fⁿr die Teilschlⁿssel die inversen Elemente gesucht. Das bedeutet, fⁿr alle Teilschlⁿssel, die an der Addition beteiligt sind, ist es das 2er-Complement. Fⁿr die Teilschlⁿssel, die an der IDEA-Multiplikation beteiligt sind, wird das inverse Element mit dem "Erweitertem Euklidischen Algorithmus" ausfindig gemacht. In der vorliegenden Anwendung ist die IDEA-Entschlⁿsselung nicht von Bedeutung, weil beim Cipher-Feedback Mode auf beiden Seiten nur die Verschlⁿsselung erforderlich ist.
Noch eine Anmerkung zum IDEA. Dieser Algorithmus ist urheberrechtlich geschⁿtzt. Der kommerzielle Einsatz ist nicht erlaubt ohne Entrichtung entsprechender Lizenzgebⁿhren. Aber fⁿr private und schulische Zwecke ist er frei verfⁿgbar. Demnach darf das Endprodukt nicht mit diesem Algorithmus verkauft werden, aber erlaubt ist die (kostenlose) Verteilung der Software als Freeware. So ist es auch bei PGP, es ist Freeware.
4.2 Blockschaltplan
In diesem Kapitel erfolgt die nΣhere Betrachtung der verwendeten Komponenten und deren Verschaltung im Verschlⁿsselungs-Telefon (Abbildung 11).
Abbildung 11: Blockschaltbild
Die Chipkarte enthΣlt den Schlⁿssel fⁿr die Verschlⁿsselungsalgorithmen. Die Elektronik am Kartenleser wird so ausgelegt, da▀ sowohl eine Speicher- oder Prozessorkarten Verwendung finden kann. Die Karte wird mit einem Kartenleser am PC initialisiert und mit dem Schlⁿssel beschrieben. Wenn eine Prozessorkarte verwendet wird, kann sie durch eine PIN geschⁿtzt oder sogar Verschlⁿsselungsalgorithmen implementiert werden. Prozessorkarten sind aber wesentlich teurer als Speicherkarten, und sie sind kaum auf dem freien Markt verfⁿgbar. Speicherkarten sind leichter zu beschaffen, wie z.B. die SLE4428, bieten aber kaum zusΣtzliche Funktionen und auch keine Sicherheit zum Schutz des Schlⁿssels gegen unbefugtes Auslesen.
Der Steuerprozssor in diesem Telefon ist ein 51er Derivat von Dallas, der einige deutliche Vorteile gegenⁿber dem normalen 80C51 hat. Der 80C320 verfⁿgt ⁿber zwei serielle Ports. Der eine Port wird ben÷tigt, um mit Prozessorchipkarten zu kommunizieren, und der andere zur Kontrolle der Ver- und Entschlⁿsselungs-DSPs.
Die gesamte Software wird extern in einem 64kByte gro▀em EPROM abgelegt. Dort liegen auch die Routinen fⁿr die DSPs, die der 80C320 beim Einschalten ⁿber einen seriellen Port zu den DSPs ⁿbertrΣgt.
Da der Prozessor selbst nur ⁿber 256Byte RAM verfⁿgt, wird noch 32kByte statisches RAM als externer Datenspeicher angeschlossen.
ZusΣtzlich bekommt das GerΣt noch 8kByte NVRAM. Das ist RAM, welches seinen Inhalt auch im spannungslosen Zustand behΣlt, da es eine eigene Lithium-Batterie ⁿber dem Chip hat. In diesem Speicher k÷nnen z.B. Telefonnummernlisten und GerΣteeinstellungen gespeichert werden. Der Einsatz von NVRAMs mit eingebauter Echtzeituhr ist ebenfalls m÷glich.
Als Ausgabeeinheit zum Benutzer wird ein Flⁿssigkristall-Display eingesetzt, das direkt am Prozessor-Bus betrieben wird. Ein solches Display kann alle Alpha-Nummerischen-Zeichen und sogar einige selbst definierte Zeichen darstellen.
Zur Eingabe wird eine 16er oder 20er Tastatur eingesetzt, die ⁿber einen Tastaturcontroller mit dem Prozessor-Bus verbunden ist. Die Tastatur wird unter anderem ⁿber die zw÷lf bei einem Telefon ⁿblichen Tasten (0 bis 9, * und #) verfⁿgen. ZusΣtzlich kommen noch Tasten zur Menⁿsteuerung (Pfeiltasten, L÷schen und BestΣtung) hinzu.
Das Wichtigste an einem ISDN-Telefon ist der ISDN-Controller-Baustein. Er hat die Aufgabe, den S0-Bus zu verwalten, die unteren Schichten des D-Kanals zu bedienen, die B-KanΣle zu verschalten und die A/D-D/A Wandlung der Sprachsignale zu ⁿbernehmen.
Der hier benutzte AM79C30A ist der einzige mir bekannte Baustein, der diese Anforderungen in einem Chip unterbringt. Er ist zudem relativ einfach zu beschaffen. Wichtig fⁿr die Verschlⁿsselung ist noch, da▀ B-KanΣle ⁿber eine extra synchronserielle Schnittstelle geleitet werden k÷nnen. Diese wird ben÷tigt, um die Daten der B-KanΣle zu den DSPs, die sie ver- und entschlⁿsseln, zu ⁿbertragen. Zum S0-Bus hin ist der Baustein ⁿber einen ▄bertrager verbunden, der die Signale galvanisch aus dem S0-Bus entkoppelt, da auch zusΣtzlich die Versorgungspannung von 40V mit auf dem S0-Bus liegt. Aus der 40V Versorgungsspannung auf dem S0-Bus wird mit Hilfe eines Schaltwandlers +5V erzeugt. Im gesamten GerΣt wird nur diese eine Versorgungsspannug von +5V ben÷tigt. Da es vorkommen kann, da▀ das GerΣt mehr Leistung ben÷tigt als der ISDN S0-Bus zur Verfⁿgung stellen kann, besonders die DSPs haben einen hohen Stromverbrauch, mu▀ es auch m÷glich sein, das Telefon mit einem externen Netzteil zu versorgen.
Ein Telefon kommt natⁿrlich nicht ohne Mikrofon und Lautsprecher aus. Also mu▀ noch eine OperationsverstΣrkerschaltung fⁿr die analoge Ein- und Ausgabe der akustischen Signale her. Der Audioteil des ISDN-Chips ist mit jeweils zwei Ein- und AusgΣngen ausgestattet. Ein Ein- und Ausgangspaar wird fⁿr den Telefonh÷rer benutzt. Das andere Paar ist fⁿr Mikrofon und Lautsprecher im TelefongerΣt gedacht, der Freisprecheinrichtung. Zudem wird dem Lautsprecher im GerΣt noch die Funktion der Klingel zugewiesen.
Die eigentliche Ver- und Entschlⁿsselung ⁿbernehmen die beiden DSPs von Texas Instruments. Sie werden mit 40MHz getaktet, das reicht aus, um je einen 8kByte/s gro▀en Datenstrom mit dem IDEA-Algoritmus im Cipher-Block-Mode zu ver- oder entschlⁿsseln. Die DSPs haben keinen externen Datenspeicher und keinen direkten Programmspeicher, sondern verfⁿgen ⁿber ein 1,5k(16Bit internes RAM. Das Programm fⁿr die DSPs wird nach dem Einschalten von der 51er-CPU ⁿber einen Bootloader in das RAM der DSPs geladen. Die DSPs befinden sich auf einer eigenen Platine, die auf die Hauptplatine aufgesteckt wird. Das geschieht aus zwei Grⁿnden. Zum einen ist so der Algorithmus des Verschlⁿsselungsteils bei Bedarf leicht gegen einen anderen austauschbar. Und wΣren die DSPs mit auf die Hauptplatine gesetzt worden, hΣtte diese die Standard-Abma▀e einer Eurokarte (160x100mm) weit ⁿberschritten.
5 Feinkonzept
Hier folgt nun eine detaillierte Beschreibung aller Hardwarekomponenten und eine genaue Beschreibung der Crypto-Software.
5.1 Die Chipkarte
Eine Chipkarte, Σhnlich der Telefonkarte der Telekom, soll hier eingesetzt werden, um den geheimen Schlⁿssel zu speichern. In der ISO-7816 sind sΣmtliche Normen zum Thema Chipkarte enthalten [4]. Aber jeder Hersteller weicht fⁿr seine Anwendung von diesen Vorgaben ab.
Abbildung 12: Kontaktbelegung einer ⁿblichen Chipkarte
Die Belegung der Kontakte auf Chipkarten (Abbildung 12) ist fast immer gleich, sogar die von Speicher- und Prozessorkarten. Die Kontakte fⁿr die Stromversorgung (VCC und GND) befinden sich immer an derselben Stelle. SΣmtliche Karten arbeiten mit +5V, die hier ⁿber den Schutzwiderstand R60 (siehe Stromlaufplan ab Seite 63) gefⁿhrt werden. Ein in der Entwicklungsphase vorgesehener Kontakt fⁿr die EEPROM-Programmierspannung kommt nicht zum Einsatz, da alle Chipkarten mit einer eigenen Ladungspumpe ausgestattet sind. Der bedeutendste Unterschied in der Beschaltung einer Speicher- oder Prozessorkarte betrifft den Takteingang (CLK). Bezⁿglich der Speicherkarte ist er der Schiebetakt fⁿr den seriellen Bitstrom am Datenkontakt (DAT). Mit jeder fallenden Flanke am Takteingang wird das nΣchste Bit am Datenausgang ausgegeben. Fⁿr die Prozessorkarte ist der CLK-Kontakt der Eingang fⁿr den Prozessortakt, der meist 3,57MHz betrΣgt. Er wird ben÷tigt, weil eine Prozessorkarte ⁿber keine eigene Takterzeugung verfⁿgt; denn eine Chipkarte ist zu dⁿnn fⁿr einen Quarz. Also mu▀ die Hardware des Chipkartenschachts so ausgelegt sein, da▀ sie eine Frequenz von 3,57MHz am CLK-Kontakt zur Verfⁿgung stellt oder den Pegel des CLK-Kontaktes direkt festlegen kann. Dafⁿr ist IC10a/b/c zustΣndig; es erzeugt die Frequenz mit Hilfe eines Quarzes, und der Prozessor kann ⁿber zwei Portleitung den CLK-Pin high, low oder mit dieser Frequenz beschalten.
Abbildung 13: Clk-Pin der Chipkarte
Mittels des Reset-Kontaktes (RES) auf der Prozessorkarte wird er ein low-aktiver Hardwarereset ausgel÷st. Auf der Speicherkarte hat dieser Eingang noch zusΣtzliche Aufgaben, die in Verbindung mit dem CLK-Eingang bestimmt werden. Aber fⁿr die Hardware des Chipkartenschachts, der an die Steckleiste X3 angeschlossen ist, reicht es, ihn mit einer Portleitung des Prozessors zu verbinden. Der gesamte bidirektionale Datenaustauch findet ⁿber den Open-Collector DAT-Kontakt statt, Σhnlich dem RS232 Protokoll, jedoch mit 5Volt Pegel und nur einer Leitung fⁿr beide Richtungen. Es existieren keine zusΣtzlichen Steuerleitungen; die ▄bertragung enthΣlt ein Startbit(0), 8 Datenbits, ggf. ein ParitΣtsbit und 2 Stopbits(1). Die Baudrate ergibt sich durch eine Teilung des Prozessortaktes am CLK-Eingang, die meist 372 betrΣgt. Damit ergeben sich bei 3,57MHz 9600 Baud. Deswegen wird ein serieller Port des Prozessors fⁿr die Kommunikation mit der Chipkarte verwendet. Da der Prozessor jeweils eine extra Leitung fⁿr beide Richtungen hat, werden sie einfach verbunden. Es existiert eine Unmenge genormter und ungenormter Protokolle fⁿr Prozessorchipkarten, so da▀ sie nicht weiter erwΣhnt werden, sondern nur das hier eingesetzte Protokoll, welches eine reduzierte Variante des ISO7816-T=1 ist (Abbildung 14).
Nach dem Reset sendet die Karte einen ATR-String, der Inhalt dieser Bytefolge gibt Auskunft ⁿber das verwendete Protokoll und ist in der ISO7816 Norm definiert. Fⁿr die Chipkarte handelt es sich nur um einen konstanten String, der gesendet wird.
Abbildung 14: Protokoll der Prozessorchipkarte
Danach wartet die Karte auf Daten vom Terminal. Ein Paket vom Terminal beginnt immer mit einem 6 Byte langen Header, der ausschlie▀lich mit $01 beginnt. Dieses Byte war vorgesehen, um mehrere Karten am Bus zu adressieren, aber hier gibt es nur eine einzige. Das zweite Byte ist das Class-Byte und wΣhlt die Anwendung innerhalb der Karte aus. Da hier nur eine Anwendung existiert, nΣmlich die Bereitstellung des Schlⁿssels, gibt es auch nur ein Classbyte, welches willkⁿrlich den Wert $02 erhΣlt. Dann folgt das Instruction-Byte mit dem Kommando an die Karte. Die Commandbytes sind ebenfalls in der ISO7816-4/-5 genormt, aber kaum jemand hΣlt sich an die Regelung. P1 und P2 sind zusΣtzliche Parameter fⁿr das Kommando. Als letztes Byte im Header erscheint die LΣnge der Daten, die das Terminal mit diesem Kommando an die Karte schicken will. Mit dem Inhalt $00 werden keine Daten zur Karte geschickt, und das Datenfeld ist leer. Zum Abschlu▀ des Packets kommt ein Prⁿfbyte, das als Checksumme alle Bytes des Pakets verexclusivodert enthΣlt. Hat die Karte nun ein solches Packet als gⁿltig erkannt, so schickt es ein Antwortpaket, welches gleichfalls aus einem Header, ggf. Daten und einem Prⁿfbyte besteht. Das Class-Byte, Instruction-Byte und die beiden Parameterbytes sind identisch mit denen des Headers vom Terminal. ZusΣtzlich enthΣlt aber dieser Header noch zwei Statuswortbytes, die Fehlercodes oder Σhnliches enthalten, vergleichbar dem Return-Wert bei C-Funktionen. Jetzt macht das Len-Byte eine Aussage ⁿber die Anzahl der Datenbytes, die die Karte ans Terminal zu schicken beabsichtigt. Abgeschlossen wird das Paket wieder mit dem Prⁿfbyte.
Die einfache Version der hier verwendeten Karte wird nur drei Kommandos kennen: Status anzeigen ($F2), PIN vergleichen ($20) und Schlⁿssel ausgeben ($C0). Da es schwer ist, als Privatkunde auf dem freien Markt Prozessorchipkarten zu kaufen, fertigt man sich einfach eine 0,7mm dⁿnne Leiterplatte in Form einer Chipkarte (85 x 54mm) und l÷tet einen SMD-Einchip-Mircocontroller auf. Hier wird ein PIC16C84 von der Firma Microchip verwendet, da er ⁿber EEPROM Speicher verfⁿgt. M÷glicherweise wird jedoch die Verfⁿgbarkeit von Prozessorchipkarten in Zukunft etwas einfacher. Es folgt nun ein Beispiel fⁿr einen Protokollablauf (Abbildung 15).
Abbildung 15: Kartenprotokoll Beispiel
Im Rahmen der vorliegenden Diplomarbeit, hinsichtlich der zur Verfⁿgung stehenden Zeit, ist die Anzahl der Funktionen begrenzt. Ein erweiterter Funktionsumfang wⁿrde zudem folgende Optionen erm÷glichen: PIN Σndern, mehrere Schlⁿssel verwalten, RSA-Algorithmen.
5.2 Der Steuerprozessor mit Speicher
Der 51er-Prozessor hat einen 8Bit Datenbus und 16Bit Adre▀bus. Aus fertigungstechnischen Grⁿnden (nur 40 Pins im GehΣuse!) werden die acht Datenbits mit den unteren acht Bits des Adre▀busses gemultiplext [3]. IC2 (74ACT573) speichert bei fallender Flanke von ALE das Low-Byte der Adresse zwischen. Der 51er-Prozessor kennt drei Arten von Speicher. Das interne RAM ist 256 Bytes gro▀ und enthΣlt zudem 128 Special-Function-Register (SFRs). In diesem Bereich wird zudem der Stack gehalten. Der Programmspeicher des 51er Prozessors kann nur gelesen werden. In ihm stehen nur die Opcodes mit ihren Parametern und konstante Daten. Mit Hilfe des /EA-Pins wird festgelegt, ob interner oder externer Programmspeicher angesprochen werden soll. Da aber der verwendete DS80C320 (IC1) ⁿber keinen internen Programm-Speicher verfⁿgt, wird Pin /EA fest auf Masse gelegt. Die /PSEN-Leitung des Prozessors steuert das Auslesen des externen Programmspeichers, einem EPROM IC3 (27C512), welches zuvor mit einem EPROM-Brenner mit den Daten beschrieben wird. In diesem Speicher befindet sich auch das Programm fⁿr die beiden DSPs und wird nach jedem Einschalten an sie gesendet. Der externe Datenspeicherbereich (Abbildung 16) kann vom Prozessor gelesen und beschrieben werden, ist wie der Programmspeicherbereich 64kByte gro▀ und wird mit den /RD und /WR Leitungen angesprochen. Mittels IC8a (74HCT139) und IC9a (74HCT00) wird der Datenspeicherbereich in eine 32kByte und vier 8kByte Sektionen geteilt. Der 32kByte-Bereich ist bestimmt fⁿr IC3 (62C256), einem statischen RAM. Das Chipselect fⁿr dieses RAM ist ausschlie▀lich die Adre▀leitung A15; sie ist fⁿr die Adressen $0000 bis $7FFF low, und der eigentliche Lese- oder Schreibzugriff erfolgt dann mit den Steuerleitungen /RD oder /WR. Wenn A15 high ist, wird IC8a (74HCT139) freigegeben, das den Adre▀breich von $8000 bis $FFFF vierteilt. Die ersten 8kByte ab $8000 sind fⁿr einen besonderen RAM-Baustein (IC5) vorgesehen. Er ist durch eine Batterie gebuffert und enthΣlt in den letzten 8Byte eine Echtzeituhr (RTC). Diese Echtzeiteinrichtung ist nicht nur als Uhr fⁿr den Benutzer gedacht, sondern es k÷nnen zudem Timestamps fⁿr die Verschlⁿsselung erzeugt werden (z.B. jeden Tag einen anderen abgeleiteten Schlⁿssel). Die ⁿbrigen drei 8kByte Bereiche im Datensektor sind fⁿr die Peripherie vorgesehen, wie LC-Display, Tastatur und ISDN-Controller.
Abbildung 16: Speicherraum des Steuerprozessors (DS80C320)
5.3 Der Steuerprozessor mit Peripherie
Am Systembus des Steuerprozessors befinden sich die drei zuvor erwΣhnten Peripherieeinheiten. LCD-Module gibt es in vielen verschiedenen Ausfⁿhrungen: mit oder ohne Hintergrundbeleuchtung, unterschiedliche Spalten- und Zeilenzahlen, verschiedene Zeichengr÷▀en. Aber die Hardwareanbindung und Softwareschnittstellen sind fast immer gleich, bedingt durch einen Quasi-Standard seitens der unterschiedlichen Hersteller, die aus dem Angebot der verfⁿgbaren Controller wΣhlen mⁿssen. An der 14poligen Steckleiste (X1) befinden sich acht Datenleitungen, eine Adre▀leitung, eine Schreib/Leseleitung, ein Enable und drei Leitungen fⁿr Versorgungsspannung und Kontrast. Alle Steuer-, Adre▀- und Datenleitungen k÷nnen direkt mit dem Systembus verbunden werden, mit Au▀nahme der Enableleitung. Diese darf nur in den High-Zustand gehen, wenn /RD oder /WR low sind und die Adresse $A000-$BFFF anliegt. Es werden vom Display zwar nur zwei Bytes ben÷tigt, aber es sind fⁿr jeden Peripheriebaustein 8kByte vorgesehen. Der Aufwand wΣre im Sinne der Aufgabenstellung, einfach und preisgⁿnstig, zu hoch, um die Adressen fⁿr alle Peripheriebausteine aufs Byte genau auszudecodieren, denn dann wΣre eine Vielzahl von weiteren TTL-Bausteinen oder ein programmierter Logikbaustein erforderlich. Der eingebaute Controller des LC-Displays hat zwei Register. In das erste Register, das Datenregister, wird der ASCII-Code des darzustellenden Zeichens geschrieben. Das zweite Register, das Controllregister, dient zur Steuerung der Displayfunktionen, wie Anzeige l÷schen, Cursorposition setzen, eigenen Zeichensatz definieren u.s.w.
Als weiteres PeripheriegerΣt fⁿr den Anschlu▀ an den Systembus ist eine Tastatur mit 16 oder 20 Tasten vorgesehen. Der Tastaturcontroller ist auf der Hauptplatine untergebracht und wird ⁿber den Steckverbinder X2 mit der Tastatur-Tastenmatrix verbunden. Der hier eingesetzte Tastaturcontroller 74C922/3 von National Semiconductors ⁿbernimmt alle fⁿr den Betrieb einer kleinen Tastaturmatrix n÷tigen Aufgaben. Dazu geh÷ren die Beschaltung der Spaltenleitungen und die Auswertung der Zeilenleitungen. Darⁿberhinaus ⁿbernimmt er auch die Entprellung der Tasten. Ist eine Taste betΣtigt worden, l÷st er einen Interrupt aus, und der Prozessor kann sich den Scancode der zuletzt gedrⁿckten Taste aus dem Register des Tastaturcontrollers holen.
5.4 Die ISDN-Hardware
Das letzte und wichtigste PeripheriegerΣt betrifft der ISDN-Hardware (Abbildung 17). Alle fⁿr den ISDN-Bus und das Audio-Interface n÷tigen Funktionen ⁿbernimmt das IC6 (Am79C30A), welches sich der CPU mit nur 8 Registern zeigt. Es existieren insgesamt ⁿber sechzig Register in diesem Chip, die jedoch indirekt angesprochen werden. Die direkt adressierbaren Register sind fast alle fⁿr die FIFO-Buffer der B-KanΣle und des D-Kanals vorgesehen. Es ist ein Command- und Datenregister fⁿr die indirekt adressierten Register vorhanden. Das Interrupt- und D-Kanal- Statusregister sind ebenfalls direkt adressierbar. Alle weiteren Register des Chips werden ⁿber das Command- und Datenregister angesprochen. Durch das Schreiben der Registernummer in das Commandregister wird mit dem Datenregisterzugriff der Zugang zum entsprechenden Registerinhalt erm÷glicht.
Abbildung 17: ISDN-Hardware
Der S0-Bus wird ⁿber ein ▄bertragerpaar (TR1) an den ISDN-Chip angeschlossen. Die Dioden (D31-D38) schⁿtzen ausschlie▀lich vor ▄berspannung. Da der S0-Bus zusΣtzlich eine Spannung von 40V fⁿhrt, wird diese fⁿr den Betrieb des GerΣts verwendet. Die 40V werden an den Mittelanzapfungen des ISDN-▄bertragerpaars auf der S0-Busseite abgegriffen. Am Jumperfeld JP1 kann festgelegt werden, ob und mit welcher PolaritΣt die Spannung genutzt wird. Die PolaritΣt spielt eine Rolle hinsichtlich der Notstromberechtigung des GerΣtes. Der eingesetzte Step-Down-Wander (IC13) kann Spannungen im Bereich von 8V bis 57V in 5V (1A max.) umsetzen. ▄ber die Diode D10 kann der Spannungsanschlu▀ vom S0-Bus erfolgen, und an Diode D11 kann wahlweise auch ein externes Netzteil angeschlossen werden. Besondere Aufmerksamkeit wird der InduktivitΣt L10 gewidmet. Diese Spule mu▀ erstens ihre InduktivitΣt (1mH) auch bei 52kHz halten, und zweitens ist die Auslegung des Spulendrahtes fⁿr mindestens 2A unumgΣnglich.
Da der ISDN-Chip die Audiofunktionen ⁿbernimmt, hat er analoge Ein- und AusgΣnge fⁿr je zwei Mikrofone und Lautsprecher. Also gibt es auch je zwei Mikrofon- und LautsprecherverstΣrker.
Die AnalogeingΣnge des ISDN-Chips erwarten eine Eingangsspannung von ~0,625Vrms bei 0dB. Die MikrofonverstΣrker (IC11a/b) sind OPVs in invertierendem Betrieb und liefern eine ein- bis fⁿfzig VerstΣrkung, die mit dem Poti P3/P4 einstellbar ist. Ebenso k÷nnen auch andere Audioquellen (z.B. Kassettenrecorder) an das Telefon angeschlossen werden. Die Mikrofone werden mit dem Steckverbinder X6 verbunden. Zum Audioeingang geh÷rt auch die RC-Kombination R30 und C30, die fⁿr den A/D-Wandler im ISDN-Chip gebraucht wird. Der ISDN-Chip liefert auch eine Referenzspannung an Pin 43, die ca. +2,5V betrΣgt und als Null-Spannung fⁿr die OPVs genutzt wird.
Die AudioausgΣnge des ISDN-Chips sind als DifferenzialausgΣnge ausgelegt und liefern ~1,25Vrms bei 0dB. Diese AusgΣnge sollten auch im Differenzsignalbetrieb genutzt werden, um St÷rungen zur unterdrⁿcken. Daher werden die OPVs (IC11c/d) auch als DifferenzverstΣrker eingesetzt. Weiterhin existiert noch eine Lautsprecherendstufe (IC12), die niederohmige Lasten (4(/8() vertragen kann und eine Leistung von einem Watt fⁿr die Lautsprecher liefert. Die LautstΣrke lΣ▀t sich am Poti P1/P2 einstellen. Angeschlossen werden die Lautsprecher am Steckverbinder X5.
Der Steckverbinder X7 steht zur Verfⁿgung fⁿr den Anschlu▀ eines Tasters oder Schalters, der dem Telefon anzeigt, ob der H÷rer grade aufgelegt oder abgehoben ist. Eine Flanke auf dieser Leitung kann einen Interrupt ausl÷sen.
Fⁿr die Verschlⁿsselung der Daten ist der serielle Peripherie-Port des ISDN-Chips wichtig, denn er kann drei B-KanΣle synchron seriell ⁿbertragen, die mit dem Multiplexer im ISDN-Chip auswΣhlbar sind. In der vorliegenden Arbeit werden jedoch nur zwei B-KanΣle ben÷tigt, einer zum S0-Bus hin und ein weiterer in Richtung A/D-D/A-Wandler. Dieser serielle Port des ISDN-Chips wird ⁿber den Steckverbinder X12 mit der DSP-Platine verbunden.
Abbildung 18: Anbindung der DSPs an den ISDN-Chip
Auf die Steckleisten X11 und X12 wird die DSP Platine aufgesetzt. ▄ber X11 sind die DSPs mit der CPU (IC1) verbunden. Diese Verbindung dient zum Laden des Programms und zur Kontrolle der DSPs durch die CPU. ▄ber X12 sind die seriellen Schnittstellen der DSPs direkt mit dem ISDN-Chip verbunden; ein Datenflu▀ des B-Kanals vom ISDN-Chip zu den DSPs und zurⁿck ist m÷glich (Abbildung 18). Jedoch nur durch die Unterstⁿtzung des Multiplexers im ISDN-Chip: Zuerst wird einer der beiden B-KanΣle vom S0-Bus-Interface ausgewΣhlt, eben der B-Kanal, der einem von der Vermittlungsstelle ⁿber den D-Kanal zugeteilt wurde. Falls das GesprΣch nicht verschlⁿsselt ist, wird dieser Kanal direkt zum Audioteil durchgeschaltet. Aber im Fall eines verschlⁿsselten GesprΣches wird nun der B-Kanal vom S0-Bus-Interface zum Bd-Kanal der seriellen Peripherieschnittstelle und der Be-Kanal der seriellen Peripherieschnittstelle zum Audioteil durchgeschaltet. Auf dieser seriellen Peripherieschnittstelle werden hintereinander drei B-KanΣle ⁿbermittelt. Der dritte B-Kanal Bf wird hier nicht benutzt. Diese Schnittstelle (Abbildung 19) hat fⁿnf Leitungen, die am Steckverbinder X12 anliegen.
Abbildung 19: Signale zwischen ISDN-IC und DSPs
Es gibt zwei Frame-Impulse, eine Clockleitung und je eine Datenleitung fⁿr jede Richtung. Bis auf SB-In kommen alle anderen Signale vom ISDN-Chip. Normalerweise wechseln die Daten bei der steigenden Flanke der Clockleitung, eine Umprogrammierung auf die fallende Flanke im ISDN-Chip ist jedoch vorgesehen. Diese M÷glichkeit wird in der vorliegenden Arbeit genutzt, um eine KompatibilitΣt zur Schnittstelle der DSPs zu schaffen. Die DSPs verfⁿgen ⁿber je zwei Frame-ImpulseingΣnge, einer zum Empfangen und einer zum Senden. Der besondere Trick an der Verschaltung der DSPs mit ISDN-Chip ist nun, da▀ die beiden Frame-Impulsleitungen des ISDN-Chips direkt an die beiden Frame-EingΣnge des DSPs gehen, aber beim zweiten DSP vertauscht sind. Damit empfΣngt der Verschlⁿsselungs-DSP Daten vom Be-Kanal und sendet auf dem Bd-Kanal. Und der Entschlⁿsselungs-DSP empfΣngt vom Bd-Kanal und sendet auf dem Be-Kanal. Fⁿr die DSPs werden nur noch die Framesignale mit Hilfe eines 74HCT86 invertiert.
5.5 Die Ver- und Entschlⁿsselungs-DSPs
Die Software fⁿr die DSPs hat ausschlie▀lich die Aufgabe, das eintreffende Byte mit dem IDEA-Algorithmus im Cipher-Feedback-Mode zu ver- oder entschlⁿsseln und es wieder auszugeben. Dabei unterscheiden sich die Programme fⁿr das Verschlⁿsseln und das Entschlⁿsseln nur geringfⁿgig voneinander. Der einzige Unterschied betrifft die Quelle des ankommenden Bytes, welches in das Schieberegister geschoben wird. Da die beiden Schieberegister auf beiden Seiten mit denselben Daten gefⁿllt werden sollen, wird immer das ⁿbertragene verschlⁿsselte Byte genommen. Beim Verschlⁿsseln ist es das Byte nach der Verexclusivoderung bzw. beim Entschlⁿsseln das Byte vor der Verexclusivoderung. Ansonsten sind beide Programme identisch (Abbildung 20).
Abbildung 20: Die Interrupt-Routienen der DSPs
Das vollstΣndige Programm wird in einer Interrupt-Service-Routine laufen, ohne jegliche Beteiligung des Hauptprogrammes.
Da der IDEA-Algorithmus 8,5 Runden (die halbe Runde bezieht sich auf die Operation mit dem Teilschlⁿssel k9.x) hat, wird er nicht einfach linear geschrieben. Es bietet sich an, eine ZΣhlschleife von 8 DurchgΣngen zu programmieren und die letzte halbe Abschlu▀runde isoliert zu schreiben. Der Zeitverlust durch die Programmierung der Schleife ist unkritisch und in Hinsicht auf den eingesparten Programmspeicher lohnenswert.
Bezⁿglich des Programmcodes ist von den drei Grundoperationen des IDEA wieder nur die IDEA-spezifische Multiplikation interessant. Eine einfache Addition und XOR-Opreration braucht nicht weiter erlΣutert zu werden, da sie nur jeweils aus einem Assemblerbefehl bestehen. Die IDEA-spezifische Multiplikation (Abbildung 21) wird analog zum C-Code (Abbildung 10) programmiert. Das vollstΣndige DSP-Listung ist ab Seite 57 abgedruckt.
Abbildung 21: IDEA-Multiplikation in DSP-Assembler
Zum IDEA geh÷rt auch das Zerlegen des Schlⁿssels in die 52 Teilschlⁿssel. Diese Aufgabe kann sowohl der DSP als auch die CPU ⁿbernehmen, da sie nur einmal am Anfang bei der Initialisierung des Schlⁿssels durchgefⁿhrt wird. In der vorliegenden Arbeit wird der DSP diese Aufgabe mitⁿbernehmen, weil der DSP effektiver mit 16Bit-Werten umgehen kann. Desweiteren ist in "kryptographischer Hinsicht" darauf zu achten, da▀ das Schieberegister fⁿr den Cipher-Feedback-Mode im Verschlⁿsselungs-DSP immer mit anderen beliebigen Werten initialisiert wird. Wenn es immer mit denselben Werten (z.B. $00) initialisiert wⁿrde, gΣbe es fⁿr einen Angreifer unter UmstΣnden Angriffsm÷glichkeiten. Die Initialisierungsaufgabe kann auch gleich von der CPU beim Programmladen in die DSPs mitⁿbernommen werden. Es k÷nnen die Zufallszahlen des ISDN-Chips genutzt werden oder beispielsweise ein angelegter ZΣhler im batteriegepuffertem RAM zum Einsatz kommen.
Zur Programmladung der DSPs soll folgendes erwΣhnt werden. Da die DSPs ⁿber kein eigenes (E)PROM verfⁿgen, mu▀ das Programm nach dem Einschalten der Versorgungsspannung in das interne RAM der DSPs geladen werden. Dafⁿr werden vom DSP drei Leitungen ben÷tigt: /Reset, XF und BIO. Der /Reset ist der lowaktive Hardwarereset des DSP, und nach der steigenden Flanke ist der DSP bereit, Daten entgegenzunehmen. XF ist der Statusausgang des DSP und zeigt an, ob die Daten korrekt empfangen worden sind. Fⁿr den seriellen Dateneingang ist BIO zustΣndig. ─hnlich der RS232-Schnittstelle gibt es hier auch hier, wie schon bei der Chipkarte, ein Startbit (0), acht Datenbits und ein oder mehr Stopbits (1). Die Baudrate wird vom DSP anhand des "Baud Detect Word" automatisch erkannt. Nach dem Resetvorgang des DSP schickt der Steuerprozessor eine bestimmte Bytefolge, wie Abbildung 22 sie zeigt.
Abbildung 22: Bootloader Protokoll fⁿr die DSPs
Das "Baud Detect Word" dient dem DSP zur Ausmessung der Baudrate. Gesendet wird hier einfach $FF. Das "Status Word" enthΣlt nur den High-Teil der TransferlΣnge und einige Konstanten. Gesendet wird in der vorliegenden Arbeit "00001xxx". Das "Interrupt Word" enthΣlt in den obersten zwei Bits die Speicherkonfiguration des DSP und in den unteren sechs Bits die Interruptfreigaben. In dieser Anwendung wird $40 geschickt, da die Interruptfreigabe dann durch das Programm selbst erfolgt. Das "Length" Byte enthΣlt den Low-Teil der TransferlΣnge. Dann folgt der eigentliche Datentransfer. Da der DSP ein 16Bit Prozessor ist, mⁿssen immer zwei Bytes pro Speicherplatz ⁿbertragen werden. Es wird die Anzahl der 16Bit Worte ⁿbertragen, die in der TransferlΣnge angegeben wurde. Abschlie▀end werden noch zwei Byte Checksumme ⁿbertragen, die 16Bit Summe aller Programmdaten. In der Checksumme gehen die Kontrolw÷rter nicht mit ein. Ist nach dem ▄bertragen der Checksumme der XF-Pin des DSPs immer noch high, ist alles in Ordnung. Geht er auf low, ist dieses ein Indiz fⁿr einen Fehler in der ▄bertragung. In dem Fall sollte der DSP in den Resetzustand gebracht und der Programmtransfer erneut probiert werden. Bei der nΣchsten fallenden Flanke am BIO-Pin, erzeugt durch das Senden von $FF, wird das transferierte Progamm gestartet. Die Leitungen XF und BIO unterliegen dann der Programmkontrolle und sind somit fⁿr den Programmierer frei verfⁿgbar. In dieser Arbeit wird das nicht genutzt.
6 Zusammenfassung
Abschlie▀end erfolgt eine kurze Zusammenfassung der Arbeit mit einer eigenen Bewertung. Desweiteren werden einige Punkte aufgezeigt, wo und wie dieses GerΣt verbessert und erweitert werden kann.
6.1 Bewertung
Die in der Aufgabenstellung genannten Punkte werden in der vorgelegten Arbeit erfⁿllt. Der Datenstrom lΣ▀t sich in der vorgesehenen Zeit von 125(s verschlⁿsseln. Bei einem Verlust der Synchronisation wird nach 1ms die Synchronisation wieder hergestellt. Durch die Wahl eines 128bit Schlⁿssels ist eine zufΣllige Erkennung weitgehend ausgeschlossen.
Zum gr÷▀ten Problem in dieser Diplomarbeit wurde im Grunde genommen genau das, was ursprⁿnglich nicht Teil der Arbeit war: der ISDN D-Kanal. Seine Implementation war fⁿr eine getrennte, parallel verlaufende Diplomarbeit vorgesehen. Aber aus gesundheitlichen Grⁿnden war der Kommilitone gezwungen, seine begonnene Diplomarbeit abzubrechen, und damit gab es fⁿr das Verschlⁿsselungstelefon auch kein D-Kanal-Protokoll. Und ein ISDN-Telefon ohne D-Kanal-Protokoll kann keine Verbindung zur Vermittlungsstelle und damit auch nicht zu einem anderen Telefon aufbauen. Wenn also der Verschlⁿsselungspartner fehlt, wird auch die Verschlⁿsselung als solche ⁿberflⁿssig. Daher mu▀te noch das ISDN D-Kanal Protokoll notdⁿrftig in den Steuerprozessor implementiert werden. Diese zusΣtzliche Arbeit hat viel von den zeitlichen Ressourcen der Diplombearbeitungszeit verbraucht, so da▀ nicht mehr die letzten noch erforderlichen Arbeiten an diesem GerΣt durchgefⁿhrt werden konnten. Das hier programmierte D-Kanal Protokoll arbeitet nur provisorisch und sollte nicht ohne weitere Verbesserungen eingesetzt werden.
Probleme gab es auch mit dem Rauschen der analogen OP-VerstΣrkerschaltung, das vom Digitalteil der Schaltung verursacht wurde. Das Rauschverhalten mⁿ▀te noch verbessert werden, aber die Bearbeitungszeit reichte nicht dafⁿr aus.
Alles rund um die Kryptographie und den DSPs funktioniert hinreichend gut und macht keinerlei Probleme. Auch die gesamte digitale Hardware des ISDN-Telefons lief auf Anhieb.
6.2 Ausblicke
Man kann dieses Verschlⁿsselungstelefon in vielerlei Hinsicht verbessern und ausbauen. Aber zu den wichtigsten Erweiterungen geh÷rt ein Public-Key-Algorithmus, wie RSA und Diffie-Hellmen-Schlⁿsselaustausch. Beide Crypto-ZusΣtze rechnen "c = mk MOD n" mit sehr gro▀en Zahlen (1024Bit oder mehr). Diese Berechnung sollte aufgrund ihres sehr schnellen Multiplikationsverm÷gens in den DSPs durchgefⁿhrt werden. Noch besser wΣre es, wenn die Chipkarte die RSA-Berechnungen durchfⁿhren wⁿrde, da der Secret-Key in ihr einen guten Schutz fΣnde. Aber solche freiprogrammierbaren RSA-Chipkarten stehen den privaten Anwendern noch nicht zur Verfⁿgung. Soll ein RSA-Algorithmus implementiert werden, mu▀ zusΣtzlich ein Protokoll zwischen den beiden Crypto-Telefonen laufen, das den verschlⁿsselten Sitzungsschlⁿssel und die Benutzerdaten ⁿbertrΣgt.
7 Anhang
7.1 Abbildungsverzeichnis
Abbildung 1: ISDN-Basisanschlu▀
Abbildung 2: ISDN Western-Stecker
Abbildung 3: Signale auf dem ISDN S0-Bus
Abbildung 4: D-Kanal Schichtenmodel
Abbildung 5: Hybrid-Algorithmus mit RSA und IDEA (PGP)
Abbildung 6: Ablauf des Diffie Hellman Schlⁿsselaustauschs
Abbildung 7: Oneway-Algorithmus zur Authentifizierung
Abbildung 8: Cipher-Feedback Mode mit IDEA
Abbildung 9: IDEA-Algorithmus
Abbildung 10: IDEA-spezifische Multiplikation in C
Abbildung 11: Blockschaltbild
Abbildung 12: Kontaktbelegung einer ⁿblichen Chipkarte
Abbildung 13: Clk-Pin der Chipkarte
Abbildung 14: Protokoll der Prozessorchipkarte
Abbildung 15: Kartenprotokoll Beispiel
Abbildung 16: Speicherraum des Steuerprozessors (DS80C320)
Abbildung 17: ISDN-Hardware
Abbildung 18: Anbindung der DSPs an den ISDN-Chip
Abbildung 19: Signale zwischen ISDN-IC und DSPs
Abbildung 20: Die Interrupt-Routienen der DSPs
Abbildung 21: IDEA-Multiplikation in DSP-Assembler
AD7 - AD0 Gemultiplexter Daten- Adre▀bus von der CPU
ALE Zeigt gⁿltige Adresse an
A15 - A8 Adre▀bus(Highteil) von der CPU
A7 - A0 Adre▀bus(Lowteil) von der CPU, vom IC2 zwischengespeichert
/PSEN Lesezugiff auf Programmspeicher (oc)
/RD Lesezugriff von der CPU auf Datenspeicher und Peripherie (oc)
/WR Schreibzugriff von der CPU auf Datenspeicher und Peripherie (oc)
/CS_NVRAM Chipselect fⁿr Batterie gepuffertes RAM bei $8000-$9FFF
/CS_DISP Chipselect fⁿr LC-Display bei $A000-$BFFF
/CS_KEYB Chipselect fⁿr Tastaturcontroller bei $C000-$DFFF
/CS_ISDN Chipselect fⁿr ISDN-Controller bei $E000-$FFFF
IRQ_ISDN Interruptanforderung vom ISDN-Controller low-aktiv
IRQ_KEYB Interruptanforderung vom Tastaturcontroller high-aktiv
DSP_D_I Serielle Daten zun den DSPs (oc)
DSP_D_O Serielle Daten von den DSPs (oc)
DSP_RES Rⁿcksetzen der DSPs (oc)
DSP_MUX Auswahlleitung fⁿr die beiden DSPs (oc)
CC_RES Rⁿcksetzleitung fⁿr Chipkarte (oc)
CC_CLK Takt fⁿr Speicherchipkarte (oc)
CC_Mode Taktfreigabe fⁿr Prozessorchipkarte (oc)
CC_DAT Datenleitung fⁿr Chipkarte (oc)
CC_SW Schaltkontakt des Chipkartenschachts
7.5 Pinbelegung der Steckverbinder
Pin 1 hat im Layout immer ein quadratisches L÷tauge. Die anderen sind rund.
X1: LC-Display
1 : GND
2 : Vcc +5V
3 : Kontrastspannung +0..2,5V
4 : Adre▀leitung 0
5 : /Write
6 : Enable
7 : Datenleitung 0
8 : Datenleitung 1
9 : Datenleitung 2
10 : Datenleitung 3
11 : Datenleitung 4
12 : Datenleitung 5
13 : Datenleitung 6
14 : Datenleitung 7
X2: Tastatur
1 : Spaltenleitung 4
2 : Spaltenleitung 3
3 : Spaltenleitung 2
4 : Spaltenleitung 1
5 : Zeilenleitung 5
6 : Zeilenleitung 4
7 : Zeilenleitung 3
8 : Zeilenleitung 2
9 : Zeilenleitung 1 ( wird nur bei 20er Tastatur benutzt )
X3: Chipkarte
1 : VCC fⁿr Chipkarte
2 : RES-Leitung fⁿr Chipkarte
3 : CLK-Leitung fⁿr Chipkarte
4 : DAT-Leitung fⁿr Chipkarte
5 : Taster zur Erkennung der Chipkarte
6 : GND
X4: S0-Bus
1 : b2 auf Pin 3 des Westernsteckers
2 : b1 auf Pin 4 des Westernsteckers
3 : a1 auf Pin 5 des Westernsteckers
4 : a2 auf Pin 6 des Westernsteckers
X5: Audio-Ausgang
1 : GND
2 : Lautsprecher fⁿr Kopfh÷rer
3 : GND
4 : Lautsprecher fⁿr GerΣt
X6: Audio-Eingang
1 : GND
2 : Mikrofon fⁿr Kopfh÷rer
3 : GND
4 : Mikrofon fⁿr GerΣt
X7: Gabelschalter
1 : GND
2 : Taster / Schalter
X11: DSP-Platine
1 : GND
2 : DSP-Mux
3 : DSP-Reset
4 : Control-Data DSP -> CPU
5 : Control-Data CPU -> DSP
6 : Vcc
X12: DSP-Platine
1 : GND
2 : Frame-Sync 1
3 : Frame-Sync 2
4 : Clock ( 192 kHz )
5 : ISDN-Data ISDN -> DSP
6 : ISDN-Data DSP -> ISDN
7 : Vcc
7.6 Stⁿcklisten
7.6.1 Stⁿckliste ISDN-Telefon-Board
Halbleiter:
1x
DS80C320
DIL40
IC1
1x
74ACT573
DIL20
IC2
1x
27C512-100
DIL28 prog.
IC3
1x
62C256-70
DIL28
IC4
1x
M48T08-100
DIL28+Batt.
IC5
1x
AM79C30A
PLCC44
IC6
1x
74C922/3
DIL18/20
IC7
1x
74ACT139
DIL16
IC8
2x
74ACT00
DIL14
IC9, IC10
1x
TL074
DIL14
IC11
1x
TDA7050
DIL8
IC12
1x
LM2575HVN
DIL16
IC13
3x
MBR160
RM10
D10, D11, D12
1x
1N4148
RM7,5
D20
8x
1N4007
RM10
D31-D38
1x
Q=11,052MHz
RM5
Q1
1x
Q=12,288MHz
RM5
Q2
1X
Q=3,5795MHz
RM5
Q3
WiderstΣnde:
1x
10(
RM7,5
R60
4x
24(
RM7,5
R35-R38
1x
100(
RM7,5
R63
6x
1,0k(
RM7,5
R44-R47, R50, R51
1x
2,2k(
RM7,5
R62
4x
2,7k(
RM7,5
R31-R34
16x
10k(
RM7,5
R20, R30, R33, R39, R40-R43, R52-R57, R70
2x
100k(
RM7,5
R58, R59
1x
1,0M(
RM7,5
R61
1x
4 x 4,7k(
SIL5
RN1
1x
Poti=10k(
P-10 liegend
P5
2x
Poti=22k(
P-10 liegend
P1, P2
2x
Poti=470k(
P-10 liegend
P3, P4
KapazitΣten:
6x
15pF
RM2,5
C21, C22, C31, C32, C61, C62
4x
100pF
RM2,5
C52, C53, C56, C57
1x
1,0nF
RM2,5
C45
1x
2,2nF
RM2,5
C30
20x
100nF
RM2,5
C33, C43-C45, C52, C53, C58, C59, C101-C112
1x
220nF
RM5
C72
2x
1,0(F
RM2,5
C54, C55
1x
2,2(F
RM2,5 tant.
C20, C71
2x
47(F / 6V
RM2,5
C41, C42
1x
100(F / 6V
RM2,5
C40
1x
100(F / 60V
RM5
C10
2x
470(F / 6V
RM5
C11
InduktivitΣten:
1x
ZKB 5051/X005
ISDN-▄Tr.
TR1
1x
1000(H / 2A
RM10
L10
Sockel / Steckverbinder:
1x
44 pol.
PLCC
IC6
1x
40 pol.
DIL
IC1
3x
28 pol.
DIL
IC3, IC4, IC5
2x
20 pol.
DIL
IC2, IC7
2x
16 pol.
DIL
IC8, IC13
3x
14 pol.
DIL
IC9, IC10, IC11
1x
8 pol.
DIL
IC12
1x
2 x 7 Stecker
RM2,54
X1
1x
1 x 9 Stecker
RM2,54
X2
1x
1 x 7 Stecker
RM2,54
X12
2x
1 x 6 Stecker
RM2,54
X3, X11
1x
1 x 5 Jumper
RM2,54
JP1
3x
1 x 4 Stecker
RM2,54
X4, X5, X6
1x
1 x 3 Stecker
RM2,54
JP2
1x
1 x 2 Stecker
RM2,54
X7
7.6.2 Stⁿckliste ISDN-DSP-Verschlⁿsselungsboard
Halbleiter:
2x
TMS320C26B
PLCC44
IC1, IC2
1x
Osc=40MHz
DIL14 / 4
IC3
1x
74HCT157
DIL16
IC4
1x
74HCT86
DIL14
IC5
WiderstΣnde:
2x
100(
RM7,5
R1, R2
2x
10k(
RM7,5
R3, R4
2x
6 x 10k(
SIL7
RN1, RN2
KapazitΣten:
5x
100nF
RM2,5
C1-C5
Sockel / Steckverbinder:
2x
68 pol
PLCC
IC1, IC2
1x
16 pol
DIL
IC4
1x
14 pol
DIL
IC5
1x
4 pol
DIL14 / 4
IC3
2x
2 pol
RM2,54
JP1, JP2
1x
1 x 7 Buchse
RM2,54
X2
1x
1 x 6 Buchse
RM2,54
X1
7.6.3 Stⁿckliste der externen Bauteile
LC-Display 2x40 mit 14-poliger Verbindungsleitung
Matrix-Tastatur 4x4 / 5x4 mit 8/9-poliger Verbindungsleitung
Chipkarten-Schacht mit 6-poliger Verbindungsleitung
zwei Lautsprecher mit einer 4-poligen Verbindungsleitung
zwei Mikrofone mit einer 4-poliger Verbindungsleitung
Taster/Schalter mit 2-poliger Verbindungsleitung
7.7 Inhalt der Daten-CD
DIPLOM(dir) ; Dateien der Diplomarbeit
DIPLOM.DOC ; Die Diplomarbeit in WinWord6
DECKBLAT.DOC ; Deckblatt der Diplomarbeit in WinWord6
ISDN_TEL.SCH ; Stromlaufplan der Telefonplatine in Eagle3
ISDN_DSP.SCH ; Stromlaufplan der DSP-Platine in Eagle3
ISDN_TEL.BRD ; Layout der Telefonplatine in Eagle3
ISDN_DSP.BRD ; Layout der DSP-Platine in Eagle3
ISDNTEL.ASM ; Sourcecode fⁿr den Steuerprozessor
IDEA_*.ASM ; Sourcecode fⁿr die DSPs
DATASHET(dir) ; DatenblΣtter der Halbleiter im PDF-AdobeAcrobatRead-Format
T320C26.PDF ; TMS320C2x DSP von TI
80C320.PDF ; DS80C320 51er CPU von Dallas
AM79C30A.PDF ; AM79C30A ISDN-Controller von AMD
27C512.PDF ; 27C512 64kB EPROM
62256.PDF ; 62256 32kB RAM
M48T08.PDF ; M48T08 8kB NVRAM + RTC von ST
MM74C922.PDF ; MM74C922/3 Tastertur-Controller von NS
LM2575HV.PDF ; LM2575HVN Schaltregler von NS
TL074.PDF ; TL074 4fach OPV von TI
TDA7050.PDF ; TDA7050 Lautsprecherverst. von Philips
74HCT573.PDF ; 74HCT573 8bit Zwischenspeicher
74HCT139.PDF ; 74HCT139 2fach DeMultiplexer
74HCT157.PDF ; 74HCT157 4fach Multiplexer
74HCT86.PDF ; 74HCT86 4fach XOR
74HCT00.PDF ; 74HCT00 4fach NAND
MBR160 ; MBR160 Diode von Motorola
HD447800.PDF ; HD44700 LC-Display-Controller von Hitachi
DOCUMENT(dir) ; ITU-T Normen im WinWord-Format
Q093*.DOC ; ITU-T Normen ISDN D-Kanal Schicht 3
Q092*.DOC ; ITU-T Normen ISDN D-Kanal Schicht 2
I043*.DOC ; ITU-T Normen ISDN Schicht 1
G0711.DOC ; ITU-T Norm Codec 8 <-> 14 Bit Expansion
EXTRA(dir)
IDEA.ASM ; IDEA Algorithmus in i386er Assembler
IDEA.C ; IDEA Algorithmus in C
IDEA.H ; geh÷rt zu IDEA.C
SERPROG.SCH ; Stromlaufplan Chipkarten ProgrammiergerΣt in Eagle3
SERPROG.BRD ; Layout Chipkarten ProgrammiergerΣt in Eagle3
SOFTWARE(dir)
EAGLE(dir) ; Platinen Layout Programm EAGLE v3.02
TMS320C2(dir) ; Software fⁿr den DSP
A51(dir) ; Software fⁿr die 51er CPU
ACROBAT(dir) ; Anzeigeprogramm fⁿr *.PDF
WORDVIEW(dir) ; Anzeigeprogramm fⁿr *.DOC
PGP(dir)
PGP26*.ZIP ; PGP ausfⁿhrbares Prgramm
PGP26*S.ZIP ; PGP Sourcecode
PGP_GER.TXT ; Deutsche Dokumentation zu PGP
Achtung! Einige Programme im Verzeichnis "Software" sind urheberrechtlich geschⁿtzt. Diese Programme dⁿrfen nur kopiert und eingesetzt werden, wenn ein Lizenzvertrag fⁿr diese Programme vorliegt. Bitte beachten Sie die Lizenzbestimmungen der einzelnen Programme.
7.8
Literaturverzeichnis
[1] "Applied Cryptography" second edition von Bruce Schneier
beim Wiley-Verlag ISBN 0-471-11709-9
[2] "Technik der Netze" 3.Auflage von Gerd Siegmund
beim R.v.Deker-Verlag ISBN 3-7685-2495-7
[3] "Das Mikrocontroller Kochbuch" von Andreas Roth
beim IWT-Verlag ISBN 3-88322-225-9
[4] "Handbuch der Chipkarten" von Rankl / Effing
beim Hanser-Verlag ISBN 3-446-17993-3
[5] PGP-Verschlⁿsselungssoftware(PGP v2.6.2i) von Philip Zimmermann *
[6] Datenbuch "TMS320C2x" von Texas Instruments *
[7] Datenbuch "AM79C30A" von AMD *
* mit auf der Daten-CD
7.9
DSP-Listing
data0 .SET 00600h ; 4 x 16Bit fⁿr die 64Bit
data1 .SET 00601h ; Daten (vom Klartext bis
data2 .SET 00602h ; hin zum Ciffretext)
data3 .SET 00603h
data4 .SET 00604h ; Zwischenergebniss innerhalb
data5 .SET 00605h ; einer IDEA-Runde
temp .SET 00606h ; Temp fⁿr Multiplikation
ser_dat .SET 00607h ; Byte von seriellem Prot
key0 .SET 00608h ; 8 x 16 Bit = 128Bit
key1 .SET 00609h ; fⁿr den Schlⁿssel
key2 .SET 0060Ah
key3 .SET 0060Bh
key4 .SET 0060Ch
key5 .SET 0060Dh
key6 .SET 0060Eh
key7 .SET 0060Fh
e_key_begin .SET 00610h ; erster expandierter Schlⁿssel